package system

import (
	"github.com/satori/go.uuid"
	"gorm.io/datatypes"
	"server/global"
)

//系统用户表
type SysUser struct {
	global.GvaModel
	ID             uint           `gorm:"column:id;primaryKey;autoIncrement;comment:用户ID" json:"id"`
	UUID           uuid.UUID      `gorm:"comment:用户UUID" json:"uuid"`
	Name           string         `gorm:"column:name;comment:用户名称" json:"name" binding:"required"`
	Avatar         string         `gorm:"column:avatar;comment:用户头像地址" json:"avatar"`
	Email          string         `gorm:"column:email;unique;comment:登陆邮箱" json:"email" binding:"required"`
	Password       string         `gorm:"column:password;comment:密码" json:"password"`
	PasswordLevel  uint           `gorm:"column:password_level;comment:密码安全等级，'糟糕', '简单', '一般', '良好', '完美'" json:"password_level"`
	RememberToken  string         `gorm:"column:remember_token;comment:找回密码的token" json:"remember_token"`
	RoleIds        datatypes.JSON `gorm:"column:role_ids;comment:用户关联角色ID集" json:"role_ids" binding:"dive,required"`
	Tags           datatypes.JSON `gorm:"column:tags;comment:所属国家标识" json:"tags" binding:"dive,required"`
	Country        string         `gorm:"column:country;comment:用户UUID" json:"country"`
	CountryName    string         `gorm:"column:country_name;comment:所属国家" json:"country_name"`
	Geographic     datatypes.JSON `gorm:"column:geographic;comment:省市区" json:"geographic"`
	GeographicName datatypes.JSON `gorm:"column:geographic_name;comment:省市区名称" json:"geographic_name"`
	Address        string         `gorm:"column:address;comment:详细地址" json:"address"`
	Phone          string         `gorm:"column:phone;comment:手机号" json:"phone"`
	Profile        string         `gorm:"column:profile;size:500;comment:个人简介" json:"profile"`
	Roles          []SysRole      `gorm:"many2many:sys_user_role;foreignKey:ID;joinForeignKey:SysUserId;References:ID;joinReferences:SysRoleId" json:"roles" binding:"-"`
}
